!% -~S~D
!% +language_name=Spanish
!% $MAX_LABELS=2000
!% $MAX_ZCODE_SIZE=40000
!!==============================================================================
!!
!! LA PEQUEÑA CERILLERA
!!
!!==============================================================================
!!
!!
!! File: cerillera.inf
!! Author(s): J. Francisco Martín (jfm.lisaso@gmail.com)
!! Cover-art: Anne Anderson
!! Language: ES (Castellano)
!! System: Inform/INFSP 6
!! Platform: Máquina-Z
!! Release: 1.2
!! Released: 2010/12/13
!! Notes:
!!
!! Gran parte del código fuente del relato ha sido copiado directamente
!! del código empleado en otros proyectos del autor, por lo que hay
!! muchas cosas prescindibles y que no aportan nada más que espacio
!! innecesario y dificultades a la hora de leerlo y entenderlo. Sin
!! embargo, debido a la falta de tiempo, ha sido imposible realizar una
!! revisión para eliminar todo aquello que pueda sobrar.
!!
!!
!!------------------------------------------------------------------------------
!!
!!
!! MODIFICACIONES A LA LIBRERÍA:
!!
!! [SpanishG.h - ParseNoun] Se altera el comportamiento de ParseNoun para que
!! no acepte cadenas de texto definidas en el campo 'adjectives' de un objeto
!! como referentes válidos al objeto a menos que exista también una
!! coincidencia en los valores de su campo 'name'.
!!
!! DIRECTIVAS DE COMPILACIÓN:
!!
!! El programa excede la cantidad de memoria reservada por defecto, de modo
!! que se modifican las directivas de compilación "MAX_LABELS" (orig. 1000) y
!! "MAX_ZCODE_SIZE" (orig. 20000) para reservar más memoria.
!!
!!
!!------------------------------------------------------------------------------
!!
!!
!! Este programa es software libre: usted puede redistribuirlo y/o
!! modificarlo bajo los términos de la Licencia Pública General GNU
!! publicada por la Fundación para el Software Libre, ya sea la versión
!! 3 de la Licencia, o (a su elección) cualquier versión posterior.
!!
!! Este programa se distribuye con la esperanza de que sea útil, pero
!! SIN GARANTÍA ALGUNA; ni siquiera la garantía implícita MERCANTIL o
!! de APTITUD PARA UN PROPÓSITO DETERMINADO. Consulte los detalles de
!! la Licencia Pública General GNU para más información.
!!
!! Debería haber recibido una copia de la Licencia Pública General GNU
!! junto a este programa. En caso contrario, consulte
!! .
!!
!! Copyright (c) 2010, J. Francisco Martín
!!
!!
!!------------------------------------------------------------------------------
!!==============================================================================
!! Constantes y variables globales del relato
!!------------------------------------------------------------------------------
Constant Story
"LA PEQUEÑA CERILLERA, de H.C. Andersen";
Constant Headline
"Un cuento interactivo por José Fco. Martín Lisaso, (c) 2010";
Constant Checking 1;
!Release 0; Serial "101209";
!Release 1; Serial "101210";
Release 2; Serial "101213";
Constant MANUAL_PRONOUNS; ! Los pronoms. refieren a objetos ya mencionados
Constant NO_PLACES; ! Acciones LUGARES Y OBJETOS desactivadas
Constant NO_SCORE; ! No se lleva conteo de puntuación
Constant SIN_MENSAJES; ! Se omiten los mensajes por defecto de la lib.
Constant STPARSER_STYLE _STI_; ! Selecciona formato de los mensajes del parser
Constant STPARSER_MSG1 "[ "; ! Define texto inicial de mensajes del parser
Constant STPARSER_MSG2 " ]"; ! Define texto final de mensajes del parser
Constant MISTYPE_MSG1 "[> "; ! Define texto inicial de mensajes del corrector
Constant MISTYPE_MSG2 " ]^"; ! Define texto final de mensajes del corrector
Constant QUICKCHECK; ! "mistype.h": corrección rápida
Constant NAMEABLES; ! Permite rutinas generales de parsing en objs.
Global GRAMMATICAL_FLEXION = 2;! Mensajes por defecto en presente, 2a pers.
Global FORMER__TX = "tu antiguo ~yo~";
Global YOURSELF__TX = "ti mismo";
Global CANTGO__TX = "No puedes ir por ahí.";
Global IS__TX = " hay";
Global ARE__TX = " hay";
Global IS2__TX = "hay ";
Global ARE2__TX = "hay ";
Global YOU__TX = "Tú";
Global PARTICULA_TE = "te";
!!==============================================================================
!! Librerías, clases y objetos
!!------------------------------------------------------------------------------
Replace Banner; ! Información básica sobre el relato, castellano
Replace DrawStatusLine; ! Dibuja la barra de estado
Replace KeyboardPrimitive; ! Requerido por "mistype.h"
Replace LMode1Sub; ! Lookmode 1: Breve
Replace LMode2Sub; ! Lookmode 2: Largo (predeterminado)
Replace LMode3Sub; ! Lookmode 3: Superbreve
Replace LookSub; ! Retorna la descripción de la localidad actual
Replace VersionSub; ! Información general sobre el relato, castellano
Include "Parser"; ! Decodifica la entrada de teclado
Include ">FlexibleSpanish.h"; ! Librería de mensajes flexibles
Include ">mistype.h"; ! Corrección automática de errores ortográficos
Include ">cerillera_lib.inf"; ! Extensiones a la librería
Include "Verblib.h"; ! Define cómo trabajan las acciones
Include ">cerillera_obj.inf"; ! Definición de atributos, clases y objetos
!!==============================================================================
!! Puntos de entrada y otras rutinas
!!------------------------------------------------------------------------------
[ Initialise;
SetGrammaticalFlexion( 6,1 ); ! Mensajes de la lib. en pasado, 3a persona
inventory_style = ENGLISH_BIT + RECURSE_BIT + FULLINV_BIT;
ChangePlayer( Cerillera );
location = ESQUINA;
lookmode = 2;
EraseWindow();
banner();
new_line; new_line;
print (stparser) "Haz clic aquí y pulsa una tecla para empezar";
KeyCharPrimitive();
EraseWindow();
return 2;
];
!!------------------------------------------------------------------------------
!! Foco del jugador
!!------------------------------------------------------------------------------
[ InScope person item;
!!-------------------
if ( person==player && location==thedark ) {
objectloop( item in parent(player) )
if ( item has moved ) PlaceInScope( item );
}
!!-------------------
return false;
];
!!------------------------------------------------------------------------------
!! Imprime el pronombre nominativo correcto correspondiente a un objeto
!!------------------------------------------------------------------------------
[ SpanishNominativePronoun obj;
switch (GetGNAOfObject(obj)) {
0, 6: print "él";
1, 7: print "ella";
2, 8: print "ello";
3, 9: print "ellos";
4, 10: print "ellas";
5, 11: print "ellos";
}
];
!!------------------------------------------------------------------------------
!! Deja la ventana en blanco
!!------------------------------------------------------------------------------
[ EraseWindow;
#Ifdef TARGET_ZCODE;
@erase_window -1;
#Ifnot; ! TARGET_GLULX
if (gg_quotewin) {
glk($0024, gg_quotewin, 0); ! close_window
gg_quotewin = 0;
}
glk($002A, gg_mainwin); ! window_clear
if (gg_statuswin) glk($002A, gg_statuswin); ! window_clear
#Endif;
];
!!==============================================================================
!! Gramática estándar y extendida
!!------------------------------------------------------------------------------
Include "SpanishG"; ! Gramática española
Include ">GramaticaExtendida.h"; ! Gramática española extendida
!!------------------------------------------------------------------------------
Verb meta 'ayuda' 'pista' 'pistas'
* -> Help
; VerboIrregular "mostrar ayuda" with imperativo 'ayuda';
Extend 'habla' replace
* noun -> TalkTo
* 'a'/'con' noun -> TalkTo
* creature -> TalkTo
* 'a'/'con' creature -> TalkTo
* 'por' noun -> TalkOn
* 'por' creature -> TalkOn
;
Verb 'conversa' 'platica'
* noun -> TalkTo
* 'a'/'con' noun -> TalkTo
* creature -> TalkTo
* 'a'/'con' creature -> TalkTo
* 'por' noun -> TalkOn
* 'por' creature -> TalkOn
;
!!------------------------------------------------------------------------------
[ HelpSub; return OBJayuda.gestor_pistas(); ];
[ TalkOnSub;
print (string) MISTYPE_MSG1;
print "habla con ", (name) noun;
print (string) MISTYPE_MSG2;
<>;
];
[ TalkToSub;
if ( noun == player ) {
switch (GRAMMATICAL_FLEXION) {
1,2,3: "Hablar con uno mismo no resulta especialmente divertido.";
4,5,6: "Hablar con uno mismo no resultaba especialmente divertido.";
}
}
if ( noun hasnt animate ) switch (GRAMMATICAL_FLEXION) {
1,2,3: "Siempre es mejor intentar hablar con cosas que puedan
devolver una respuesta.";
4,5,6: "Siempre fue mejor intentar hablar con cosas que pudiesen
devolver una respuesta.";
}
switch (GRAMMATICAL_FLEXION) {
1: print_ret (The) noun, " no parece", (n) noun, " estar interesad",
(o) noun, " en hablar conmigo.";
2: print_ret (The) noun, " no parece", (n) noun, " estar interesad",
(o) noun, " en hablar contigo.";
3: print (The) noun, " no parece", (n) noun, " estar interesad",
(o) noun, " en hablar con "; SpanishNominativePronoun( player ); ".";
4: print_ret (The) noun, " no parecía", (n) noun, " estar interesad",
(o) noun, " en hablar conmigo.";
5: print_ret (The) noun, " no parecía", (n) noun, " estar interesad",
(o) noun, " en hablar contigo.";
6: print (The) noun, " no parecía", (n) noun, " estar interesad",
(o) noun, " en hablar con "; SpanishNominativePronoun( player ); ".";
}
];